#这是数据类型转换的代码

#第一个，列表转换为字符串才能写入文件，读取之后不能直接转换为列表

import rwFile
import listExercise
import time

class StrtoList(object):

    def __init__(self) -> None:
        self.linkgroup=[]

    #入口参数为二维列表转换后的字符串
    #函数将其转回为二维列表
    def myStrtoInt(self,contents):
        k=-1
        for i in range(1,len(contents)-1):
            if contents[i] == '[':
                self.linkgroup.append([])
                k = k + 1
            elif contents[i] <= '9' and contents[i] >= '0' : 
                if contents[i-1] <= '9' and contents[i-1] >= '0':
                    continue
                elif contents[i+1] <= '9' and contents[i+1] >= '0':
                    self.linkgroup[k].append(int(contents[i]+contents[i+1]))
                else:
                    self.linkgroup[k].append(int(contents[i]))
            else:
                continue
        return self.linkgroup
    
    # 测试列表生成 存为字符串再读取转为列表
    def doTest(self):
       
        # 先创建一个二维列表
        listC = listExercise.listTest()
        listCreat = listC.TestCreatListGroupRandom(30,[2,5])
        # 然后把该二维列表写入文件
        # 首先设置文件存储路径
        # 1、创建文件夹
        folderName = 'ListStorage'    
        rwFile.mkDir().mkdir(folderName)  
        # 2、设置文件名
        fileName = 'Rank2list-' + time.strftime('%m%d-%H%M') + '.txt'
        # 3、合成完整存储路径
        full_path = '.\\' + folderName + '\\' + fileName

        #然后将列表转为字符串写入文件 
        rwFile.RWfile.recordFile(full_path,listC.ListRecord,listCreat)

        #将文件中的列表字符串读取回来
        contents = rwFile.RWfile.readFile(full_path,listC.ListRead)
  
        #转换为列表
        self.linkgroup = self.myStrtoInt(contents)

        print(self.linkgroup)


